/**
 * 
 */
package com.vector.ding.commons.util.file;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;

import com.vector.ding.commons.util.StringUtil;


/**
 * @author vector
 *
 */
public class ExcelUtil {
	
	

	private ExcelUtil() {
		
	}
	
	public static String getStringValue(HSSFCell cell, boolean numbericIntValue) {
		if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC || numbericIntValue) {
			return StringUtil.getString((int)cell.getNumericCellValue());
		}
		return cell.toString();
	}
	
	public static int getIntegerValue(HSSFCell cell) {
		if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
			return (int) cell.getNumericCellValue();
		} else {
			String stringVal = cell.toString();
			return Integer.parseInt(stringVal);
		}
	}
	
	public static BigDecimal getDecimalValue(Object value) {
		String stringValue = StringUtil.getString(value);
		if (StringUtil.isEmpty(stringValue))
			return null;
		return new BigDecimal(stringValue);
	}
	
	public static BigDecimal getCellDecimalValue(HSSFCell cell) {
		String stringValue = null;
		try {
			stringValue = cell.getStringCellValue();
			if (StringUtil.isEmpty(stringValue))
				return null;
			
			stringValue = StringUtil.removeString(stringValue, ",");
			stringValue = StringUtil.removeString(stringValue, "%");
			return new BigDecimal(stringValue);
		} catch (Exception e) {
			double value = cell.getNumericCellValue();
			return new BigDecimal(value);
		}
	}
	
	
	public static String getDateString(HSSFCell cell) {
		try {
			Date date = cell.getDateCellValue();
			return StringUtil.getDateString(date);
		} catch (Exception e) {
			e.printStackTrace();
			return cell.getStringCellValue();
		}
	}
	
	public static String getRowCellStringValue(HSSFRow row, int cellIndex) {
		HSSFCell cell = row.getCell(cellIndex);
		return StringUtil.getString(cell);
	}
}
